home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / vbdb / gfilebox.frm < prev    next >
Text File  |  1995-09-06  |  9KB  |  392 lines

  1. VERSION 2.00
  2. Begin Form GetFileBox 
  3.    BorderStyle     =   3  'Fixed Double
  4.    ClientHeight    =   2640
  5.    ClientLeft      =   1725
  6.    ClientTop       =   2445
  7.    ClientWidth     =   5055
  8.    Height          =   3045
  9.    Left            =   1665
  10.    LinkMode        =   1  'Source
  11.    LinkTopic       =   "Form1"
  12.    MaxButton       =   0   'False
  13.    MinButton       =   0   'False
  14.    ScaleHeight     =   2640
  15.    ScaleWidth      =   5055
  16.    Top             =   2100
  17.    Width           =   5175
  18.    Begin ListBox Dirs 
  19.       Height          =   1200
  20.       Left            =   1848
  21.       Sorted          =   -1  'True
  22.       TabIndex        =   4
  23.       Top             =   1260
  24.       Width           =   1530
  25.    End
  26.    Begin ListBox Files 
  27.       Height          =   1590
  28.       Left            =   168
  29.       Sorted          =   -1  'True
  30.       TabIndex        =   3
  31.       Top             =   912
  32.       Width           =   1530
  33.    End
  34.    Begin CommandButton Command2 
  35.       Caption         =   "Cancel"
  36.       Height          =   348
  37.       Left            =   3948
  38.       TabIndex        =   6
  39.       Top             =   600
  40.       Width           =   936
  41.    End
  42.    Begin CommandButton Command1 
  43.       Caption         =   "OK"
  44.       Height          =   348
  45.       Left            =   3948
  46.       TabIndex        =   5
  47.       Top             =   120
  48.       Width           =   936
  49.    End
  50.    Begin TextBox FileSpec 
  51.       Height          =   288
  52.       Left            =   1176
  53.       TabIndex        =   2
  54.       Top             =   132
  55.       Width           =   2616
  56.    End
  57.    Begin Label Label2 
  58.       Caption         =   "&Directories:"
  59.       Height          =   180
  60.       Left            =   1848
  61.       TabIndex        =   1
  62.       Top             =   1008
  63.       Width           =   1020
  64.    End
  65.    Begin Label Path 
  66.       Height          =   180
  67.       Left            =   1848
  68.       TabIndex        =   8
  69.       Top             =   672
  70.       Width           =   1992
  71.    End
  72.    Begin Label Label1 
  73.       Caption         =   "&Files:"
  74.       Height          =   180
  75.       Left            =   168
  76.       TabIndex        =   0
  77.       Top             =   672
  78.       Width           =   600
  79.    End
  80.    Begin Label Label3 
  81.       Caption         =   "File &Name"
  82.       Height          =   180
  83.       Left            =   168
  84.       TabIndex        =   7
  85.       Top             =   168
  86.       Width           =   936
  87.    End
  88. End
  89. '
  90. 'Code for Visual Basic 1.0 and Windows 3.0
  91. '(C)1991 Marquis Computing. All Rights Reserved.
  92. '
  93. 'File Dialog box manager. Uses Windows system calls to increase
  94. 'speed and give a dialog box that dosen't have "visual basic"
  95. 'stamped all over it!
  96. '
  97.  
  98. DefInt A-Z
  99.  
  100. Declare Function DlgDirList Lib "User" (ByVal hDlg As Integer, ByVal lpPathSpec As String, ByVal nIDListBox As Integer, ByVal nIDStaticPath As Integer, ByVal wFiletype As Integer) As Integer
  101.  
  102. Const TRUE = -1
  103. Const FALSE = 0
  104.  
  105. '--- these constants are used by GetFileBox form
  106. Const File_Box = &H7
  107. Const Dir_Box = &H9
  108. Const DrivesAndDir = &H10 Or &H4000 Or &H8000
  109. Const FilesOnly = &H1
  110.  
  111. Dim File_Mask As String
  112.  
  113. Sub ChangeTo (FileSpec$)
  114.  
  115.     On Error GoTo ErrorHandler
  116.  
  117.     OldPath$ = CurDir$("")
  118.     
  119.     If InStr(FileSpec$, "[-") Then      'drive
  120.         Drive$ = Mid$(FileSpec$, 3, Len(FileSpec$) - 3)
  121.         ChDrive Drive$
  122.         UpDateForm
  123.  
  124.     ElseIf InStr(FileSpec$, "[") Then   'dir
  125.         SDir$ = Mid$(FileSpec$, 2, Len(FileSpec$) - 2)
  126.         ChDir SDir$
  127.         UpDateForm
  128.  
  129.     Else
  130.     End If
  131.  
  132.     Exit Sub
  133.     
  134.  
  135. ErrorHandler:
  136.     ChDrive OldPath$
  137.     ChDir OldPath$
  138.     Exit Sub
  139.     
  140. End Sub
  141.  
  142. Sub Command1_Click ()
  143.     
  144.     
  145.     GetFileBox.Hide
  146.     GetFileBox.Path = CurDir$
  147.  
  148. End Sub
  149.  
  150. Sub Command2_Click ()
  151.     
  152.     GetFileBox.FileSpec.Text = ""
  153.     GetFileBox.Hide
  154.  
  155. End Sub
  156.  
  157. Sub Dirs_DblClick ()
  158.  
  159.  
  160.     '
  161.     '
  162.     '
  163.  
  164.     FileSpec.Text = File_Mask
  165.     NewFileSpec$ = Dirs.Text
  166.     ChangeTo NewFileSpec$
  167.  
  168. End Sub
  169.  
  170. Sub Dirs_KeyDown (KeyCode As Integer, Shift As Integer)
  171.  
  172.     FileSpec.Text = ProcessDir()
  173.  
  174. End Sub
  175.  
  176. Sub Dirs_KeyPress (KeyAscii As Integer)
  177.  
  178.     If KeyAscii = 13 Then
  179.         FileSpec.Text = File_Mask
  180.         NewFileSpec$ = Dirs.Text
  181.         ChangeTo NewFileSpec$
  182.     End If
  183.  
  184. End Sub
  185.  
  186. Sub Dirs_KeyUp (KeyCode As Integer, Shift As Integer)
  187. FileSpec.Text = ProcessDir()
  188. End Sub
  189.  
  190. Sub Dirs_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  191. FileSpec.Text = ProcessDir()
  192. End Sub
  193.  
  194. Sub Files_DblClick ()
  195.  
  196.     '
  197.     '
  198.     '
  199.  
  200.     GetFileBox.Hide
  201.  
  202. End Sub
  203.  
  204. Sub Files_KeyDown (KeyCode As Integer, Shift As Integer)
  205.  
  206.     FileSpec.Text = Files.Text
  207.     
  208. End Sub
  209.  
  210. Sub Files_KeyPress (KeyAscii As Integer)
  211.     
  212.         If KeyAscii = 13 Then GetFileBox.Hide
  213.  
  214. End Sub
  215.  
  216. Sub Files_KeyUp (KeyCode As Integer, Shift As Integer)
  217.     FileSpec.Text = Files.Text
  218. End Sub
  219.  
  220. Sub Files_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
  221.     
  222.     FileSpec.Text = Files.Text
  223.  
  224. End Sub
  225.  
  226. Sub FileSpec_KeyPress (KeyAscii As Integer)
  227.  
  228.     If KeyAscii = 13 Then
  229.         FileSpec.Text = UCase$(FileSpec.Text)
  230.         KeyAscii = 0
  231.         UpDateForm
  232.     End If
  233.  
  234. End Sub
  235.  
  236. Sub Form_Load ()
  237.     
  238.     '
  239.     'Center form
  240.     '
  241.  
  242.     '--- Center form
  243.     Screen.MousePointer = 11
  244.     WinWidth = (Screen.Width - GetFileBox.Width) \ 2
  245.     WinHieght = (Screen.Height - GetFileBox.Height) \ 2
  246.     GetFileBox.Move WinWidth, WinHieght
  247.     
  248.     '--- load the files box
  249.     If FileSpec.Text = "" Then FileSpec.Text = "*.*"
  250.     
  251.     '--- display current path
  252.     ThisDir$ = LCase$(CurDir$)
  253.     If Len(ThisDir$) > 20 Then
  254.       ThisDir1$ = Left$(ThisDir$, 3)
  255.       ThisDir2$ = "..."
  256.       ThisDir3$ = Right$(ThisDir$, 15)
  257.       ThisDir$ = ThisDir1$ + ThisDir2$ + ThisDir3$
  258.     End If
  259.     GetFileBox.Path.Caption = ThisDir$
  260.     
  261.     Screen.MousePointer = 0
  262.  
  263. End Sub
  264.  
  265. Sub Form_Resize ()
  266.     
  267.     File_Mask = FileSpec.Text
  268.  
  269.     '--- load the files box
  270.     LoadDir File_Box, File_Mask, FilesOnly
  271.     
  272.     '--- load the dir/drive box
  273.     LoadDir Dir_Box, File_Mask, DrivesAndDir
  274.     
  275.  
  276. End Sub
  277.  
  278. Function GetMask$ (FileSpec$)
  279.  
  280.     '
  281.     '
  282.     '
  283.         
  284.     For X = Len(FileSpec$) To 1 Step -1
  285.       If Mid$(FileSpec$, X, 1) = "." Then
  286.         GetMask$ = "*" + Mid$(FileSpec$, X)
  287.         Exit For
  288.       End If
  289.     Next
  290.  
  291. End Function
  292.  
  293. Sub LoadDir (ListBox, Mask$, Item)
  294.     
  295.     '
  296.     'Loads a listbox with a variety of disk file items. Usually the array
  297.     'of items are file(s), dir(s) or drive(s). Uses a windows system call
  298.     'for enhanced speed and versatility.
  299.     '
  300.     'On entry
  301.     '---------------------------------------------------------------------
  302.     'ListBox:   the number of the list box (i.e., 1,2 etc.)
  303.     '
  304.     'Mask$  :   a file specification mask (i.e., *.DBF, ?.DAT, *.SY?)
  305.     '
  306.     'Item   :   an integer which represents the type of item to load into
  307.     '           the list box where:
  308.     '
  309.     '           &H0     = read/write files only
  310.     '           &H1     = read-only files
  311.     '           &H2     = hidden files
  312.     '           &H4     = system files
  313.     '           &H10    = sub dirs
  314.     '           &H20    = archive
  315.     '           &H4000  = drives
  316.     '           &H8000  = force ONLY those items meeting Mask$ and Item%
  317.     '                     criteria to be loaded.
  318.     '
  319.     'NOTE:  Items may be OR'd to combine -- for example to load system files
  320.     '       and drives ONLY, you would set up Item% as follows:
  321.     '
  322.     '               Item% = &H4 Or &H4000 Or &H8000
  323.     'on exit
  324.     '--------------------------------------------
  325.     'The list box is filled with contents specified (if any found)
  326.     '
  327.     '
  328.      
  329.      '--- get windows handle of form
  330.      hDlg = GetFileBox.hWnd
  331.      
  332.      '--- ASCIIZ file spec
  333.      lpPathSpec$ = LTrim$(RTrim$(Mask$)) + Chr$(0)
  334.  
  335.      '--- assign list box number
  336.      nIDListBox = ListBox
  337.  
  338.      '--- no static path id
  339.      nIDStaticPath = 0
  340.      
  341.      '--- assign item
  342.      wFiletype = Item
  343.      
  344.      '--- cal